package model

// Order 订单
type Order struct {
	OrderID     string  //订单号
	CreateTime  string  //生成订单的时间
	TotalCount  int64   //订单中座位数
	TotalAmount float64 //订单中票的总金额
	State       int64   //订单状态：0 未支付；1 已支付；2 已超时
	UserID      int64   //订单所属的用户的id
	User        *User   //订单所属的用户
	FilmName    string  //订单的电影名称
	HallID      int64   //订单的演出厅号
	ScheduleID  int64   //演出计划ID
	Price       float64 //订单中票的单价
	Seats       []*Seat //订单中的座位
}

// GetSeatIDs 获取座位的ID
func (o *Order) GetSeatIDs() []string {
	var ids []string
	for _, v := range o.Seats {
		ids = append(ids, string(v.ID))
	}
	return ids
}

// GetCols 获取座位的行
func (o *Order) GetCols() []string {
	var cols []string
	for _, v := range o.Seats {
		cols = append(cols, string(v.Col))
	}
	return cols
}

// GetRows 获取座位的列
func (o *Order) GetRows() []string {
	var rows []string
	for _, v := range o.Seats {
		rows = append(rows, string(v.Row))
	}
	return rows
}

// IsLose 判断订单是否失效
func (o *Order) IsLose() bool {
	return o.State == 2
}

// IsPay 判断订单是否已支付
func (o *Order) IsPay() bool {
	return o.State == 1
}

// NoPay 订单未支付
func (o *Order) NoPay() bool {
	return o.State == 0
}
